/*
 * ParamNull.java
 * 
 * Copyright 2004 Christoph Csallner and Yannis Smaragdakis.
 */
package edu.gatech.cc.cnc.params;

import edu.gatech.cc.jcrasher.plans.expr.Variable;
import edu.gatech.cc.jcrasher.plans.stmt.BlockStatement;

/**
 * Represents the null value of any reference type.
 * ParamArray and ParamComplex can be == or != to ParamNull.
 * 
 * @author csallner@gatech.edu (Christoph Csallner)
 */
public final class ParamNull extends ParamRefType {
	/* Singelton */
	
	private final static ParamNull singelton = new ParamNull();
	
	/**
	 * Constructor not accessible
	 */
	private ParamNull(){
		super("Null");
	}
	
	/**
	 * @return instance
	 */
	public static ParamNull getCreateSingelton() {
		getEq().addTuple(singelton);  //register in equivalence relation.
		return singelton;
	}
	
	@Override
	protected BlockStatement planFromElems(Variable id) {  //FIXME
		//TODO: Log
		throw new IllegalStateException();
	}

}
